1. 호밍 DeltaTime 정밀도 문제 해결

// 2. 턴 리밋 적용 (mHomingTurnLimit가 도 단위라고 가정 시)
float MaxStep = XMConvertToRadians(mHomingTurnLimit);

// 핵심: Slerp처럼 비율 계산
float Alpha = (mHomingTurnLimit <= 0) ? 1.0f : min(1.0f, MaxStep / Radian * DeltaTime);         //   문제의 코드!
// 3. 축 계산 및 쿼터니언 생성
XMVECTOR AxisV = XMVector3Normalize(XMVector3Cross(ForwardV, ToTargetUnitV));
if (XMVector3Equal(AxisV, XMVectorZero()))
{
	XMFLOAT3 Right = Owner->GetRightVector();
    XMVECTOR RightV = XMLoadFloat3(&Right);
    AxisV = XMVector3Normalize(XMVector3Cross(RightV, ToTargetUnitV));
}
XMVECTOR RotationQuatV = XMQuaternionRotationAxis(AxisV, Radian * Alpha);    //   문제의 코드!

회전 각을 계산하는 코드인데, 멍청하게 Alpha에서 라디안을 나누고, 다시 라디안에 알파를 곱하는 짓을 해서 정밀도 문제가 생겼다.

// mHomingTurnLimit를 "초당 회전 각도(Degree/sec)"라고 정의합시다.
float TurnSpeedRad = XMConvertToRadians(mHomingTurnLimit);

// 1. 이번 프레임에 최대로 회전할 수 있는 '각도 크기'를 구합니다.
float MaxAngleThisFrame = TurnSpeedRad * DeltaTime;

// 2. 가야 할 각도(Radian)와 회전 가능 각도(MaxAngleThisFrame) 중 작은 것을 선택합니다.
// 만약 남은 각도가 이번 프레임 회전량보다 작으면 그냥 남은 각도만큼만 돕니다.
float ActualRotation = min(Radian, MaxAngleThisFrame);

// 3. 축 계산 및 쿼터니언 생성
XMVECTOR AxisV = XMVector3Normalize(XMVector3Cross(ForwardV, ToTargetUnitV));
if (XMVector3Equal(AxisV, XMVectorZero()))
{
    XMFLOAT3 Right = Owner->GetRightVector();
    XMVECTOR RightV = XMLoadFloat3(&Right);
    AxisV = XMVector3Normalize(XMVector3Cross(RightV, ToTargetUnitV));
}
XMVECTOR RotationQuatV = XMQuaternionRotationAxis(AxisV, ActualRotation);